home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Supervisor's Toolkit
/
Network Supervisor's Toolkit.iso
/
tools
/
nwtp06
/
uspace.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-07-10
|
3KB
|
101 lines
{$X+,B-,V-} {essential compiler directives}
program uspace;
{ Example for the nwFile unit / NwTP 0.6 API. (c) 1993,1995, R.Spronk }
{ Purpose: A quick way of telling how much space each of your users is
taking up. For Novell 3.x networks.
(3867) Tue 29 Mar 94 19:01
By: Richard Jary
To: All
Re: Disk Space by Login Name
St:
------------------------------------------------------------
After a quick way of telling how much space each of our users is
taking up. Novell 3.11 system, same info as you get by SYSCON ->
UserInfo -> Volume/Disk Restrictions. But preferably for all
users in a text file format, rather than one by one.
Reason - we have a shared area with many directories. All with
fun names like CAMBODIA, where any one of 10 people could be
saving stuff. I'd like to go the the (l)users and say "OI! -
You've got 40MB of stuff on this server - Clean It Up!" sort
of thing. Either more or less polite depending on the user
involved!
Richard
Internet: rjary@nibueng.ccdn.otc.com.au
--- msgedsq 2.1a
* Origin: Networking from Narara. (3:711/445) }
Uses nwMisc,nwBindry,nwFile;
Var lastObjSeen : Longint;
RepName : String;
RepType : Word;
RepId : LongInt;
RepFlag : Byte;
RepSecurity : Byte;
RepHasProperties: Boolean;
FullUserName : string;
MaxAllowedBlocks,BlocksInUse:Longint;
VolumeNbr : Byte;
VolUsageInfo : TvolUsage;
Version : Word;
VolInfo:array[0..31] of record
Name :string;
SectorsPerBlock:Byte;
end;
begin
If NOT IsShellLoaded
then begin
writeln('USPACE requires:');
writeln(' -The shell to be loaded;');
halt(1);
end;
GetNWversion(version);
if version<300
then begin
writeln('Netware 3.x only.');
halt(1);
end;
for VolumeNbr:=0 to 31
do begin
IF GetVolumeName(VolumeNbr,VolInfo[VolumeNbr].name)
and GetVolumeUsage(VolumeNbr,VolUsageInfo)
then VolInfo[VolumeNbr].SectorsPerBlock:=VolUsageInfo.SectorsPerBlock;
end;
lastObjSeen:=-1;
While ScanBinderyObject('*',OT_USER,
lastObjSeen,
RepName,RepType,RepId,RepFlag,RepSecurity,RepHasProperties)
do begin
GetRealUserName(RepName,FullUserName);
writeln(Repname+' ('+FullUserName+')');
For VolumeNbr:=0 to 31
do if GetObjectVolRestriction(VolumeNbr,RepId,MaxAllowedBlocks,BlocksInUse)
then begin
write(' ',volInfo[VolumeNbr].Name,' :',
BlocksInUse*(VolInfo[VolumeNbr].SectorsPerBlock DIV 2),' Kb.');
if MaxAllowedBlocks=$40000000
then writeln
else writeln(' Restriction: ',MaxAllowedBlocks*4,' Kb.');
end;
end;
if nwBindry.Result=$FC { NO_SUCH_OBJECT, indicates end of search }
then writeln('')
else writeln('error scanning bindery:',HexStr( nwBindry.Result,2));
end.